﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using negocios;
using objetos;
using publico;

namespace softsales.pagina.login
{
    public partial class login_acesso : System.Web.UI.Page
    {
        BLL_TB_USUARIO b_tb_usuario = new BLL_TB_USUARIO();
        OBJ_TB_USUARIO o_tb_usuario = new OBJ_TB_USUARIO();

        // log acesso
        BLL_TB_USUARIO_LOG_ACESSO b_tb_usuario_log_acesso = new BLL_TB_USUARIO_LOG_ACESSO();
        protected void Page_Load(object sender, EventArgs e)
        {
            String path = MapPath("~/pagina/instalacao");
            if (PUB_FUNCOES.ExisteDiretorio(path))
            {
                Response.Redirect("~/pagina/instalacao/instalar_sistema.aspx", false);
            }
            else
            {
                if (!IsPostBack)
                {

                    if (!b_tb_usuario.ExisteLogin("softsales"))
                    {
                        Response.Redirect("login_registro.aspx", false);
                        return;
                    }


                    PUB_SESSAO.Tentativas = 1;              
                    TXT_LOGIN.Focus();
                }
            }

            

        }

        protected void BTN_LOGIN_Click(object sender, EventArgs e)
        {
            bool erro = false;
            String id_session = HttpContext.Current.Session.SessionID.ToString();


            // VERIFICA SE OS CAMPOS NAO ESTAO VAZIOS
            if (TXT_LOGIN.Text != "" || TXT_SENHA.Text != "")
            {

                // VERIFICA SE O LOGIN É APENAS LETRAS
                if (!PUB_FUNCOES.ApenasTexto(TXT_LOGIN.Text))
                {
                    Master.MSG_ALERTA("Seu login deve ser conter apenas letras.");
                    erro = true;
                }

                //  SE NAO OUVER ERRO ANTERIOR
                if (!erro)
                {

                    // SE O LOGIN E SENHA FOR VALIDO VAI PARA PAGINA INICIAL
                    if (b_tb_usuario.ValidaLoginSenha(TXT_LOGIN.Text, PUB_FUNCOES.CriptografarSenha(TXT_SENHA.Text)))
                    {
                        b_tb_usuario.CriarSessao(TXT_LOGIN.Text, PUB_FUNCOES.CriptografarSenha(TXT_SENHA.Text), id_session);

                        b_tb_usuario_log_acesso.LogAcesso();

                        Response.Redirect("~/Default.aspx", false);
                    }
                    else
                    {

                        // SE O NUMERO DE TENTATIVAS FOR MAIOR QUE 3
                        if (PUB_SESSAO.Tentativas > 3)
                        {

                            Master.MSG_ALERTA("Número máximo de tentativas foi atingida. Seu usuário foi bloqueado, entre em contato com administrador");
                            b_tb_usuario.DesativarLogin(TXT_LOGIN.Text);

                        }
                        else
                        {
                            // SE O LOGIN E SENHA FOREM INVALIDOS SOMA O NUMERO DE TENTATIVAS
                            PUB_SESSAO.Tentativas = PUB_SESSAO.Tentativas + 1;

                            Master.MSG_ALERTA("Login e/ou Senha Inválidos");

                            
                        }


                    }

                }


            }
            else
            {
                Master.MSG_ALERTA("Por favor entre com seu login e senha");
            }
        }
    }
}